package org.example.service;

import org.example.domain.BookingRecord;
import org.example.domain.InoculationRecord;
import org.example.utils.ResponseUtil.ResponseResult;

public interface InoculationRecordService {


    /**
     * 增加疫苗接种记录，
     * 通过预约记录的"确认接种"按钮。
     */
    ResponseResult insertInoculationByBooking(BookingRecord bookingRecord);



    /**
     * 增加 疫苗接种记录:
     * 不可缺少的数据是用户的User_uid。
     * 预约时间如果为空，为其赋默认值，
     * 接种时间如果为空，就为其赋系统的当前时间。
     * 接种次数会通过统计数据库中的已有接种次数获得。
     */
    ResponseResult insertInoculationRecord(InoculationRecord record);


    /**
     * 修改 记录：根据接种记录的id
     */
    ResponseResult updateInoculationById(InoculationRecord record);


    /**
     * 逻辑删除：根据接种记录表的ir_id
     */
    ResponseResult deleteInoculationById(Integer ir_id);



    /**
     * 根据用户UserId查找多个接种记录
     */
    ResponseResult selectInoculationByUserId(Integer userId);


    /**
     * 根据用户的账号userAccount，进行模糊查询
     */
    ResponseResult selectInoculationLikeUserAccount(String userAccount);


    /**
     * 根据用户的用户名username，进行模糊查询
     */
    ResponseResult selectInoculationLikeUsername(String username);



    /**
     * 根据 接种日期inoculate_time，进行 模糊查询.
     * 模糊查询接种时间，只根据日期2022-01-15查，忽略后面的接种时间
     */
    ResponseResult selectInoculationLikeInoculate_time(String inoculateDate);


    /**
     * 根据接种次数count，查找多条接种记录
     */
    ResponseResult selectInoculationByCount(Integer count);




    /**
     * 根据接种时间升序查询 所有疫苗接种记录
     */
    ResponseResult AscSelectAllByTime();

    /**
     * 根据接种时间降序查询 所有疫苗接种记录
     */
    ResponseResult DescSelectAllByTime();


    /**
     * 查询所有疫苗接种记录
     */
    ResponseResult selectAllInoculation();


}
